'use strict';

const { Controller } = require('egg');

class HomeController extends Controller {
  async index() {
    const { ctx, app } = this;
    const data = ctx.params.id;
    // const list  = await app.mysql.select(id);
    // 直接执行sql
    let sql = ''
    if (data === 'hk_data') {
      // 香港
      sql = `Select DISTINCT hk_point, d_number, time From ${data} ORDER BY time`
    } else if (data === 'jp_data') {
      // 日本
      sql = `Select DISTINCT title, number, times From ${data} ORDER BY times`
    } else {
      // 国内
      sql = `Select DISTINCT point_c, number, showtime From ${data} ORDER BY showtime`
    }
    const list = await this.app.mysql.query(sql);
    let legend = [], xAxis = [], series = [], dataObj = {};

    list.forEach(item => {
      // 检测点位 国内：point_c，香港：hk_point，日本：title
      let point = item.point_c || item.hk_point || item.title
      // 时间 国内：showtime，香港：time，日本：times
      let time = item.showtime || item.time || item.times
      // 数据 国内：number，香港：d_number，日本：number
      let data = item.number || item.d_number

      // 获取图例
      if (!legend.includes(point)) {
        legend.push(point)
        dataObj[point] = []
      }
      // 获取轴
      if (!xAxis.includes(time.substring(0, 13))) {
        xAxis.push(time.substring(0, 13))
      }
      // // 获取数据
      // if (dataObj.hasOwnProperty(point)) {
      //   dataObj[point].push(data)
      // }
    })

    // 遍历xAxis
    for (let j = 0; j < list.length; j++) {
      for (let i = 0; i < xAxis.length; i++) {
        const item = list[j]
        // 检测点位 国内：point_c，香港：hk_point，日本：title
        let point = item.point_c || item.hk_point || item.title
        // 时间 国内：showtime，香港：time，日本：times
        let time = item.showtime || item.time || item.times
        // 数据 国内：number，香港：time，日本：number
        let data = item.number || item.d_number

        // 获取数据
        if (xAxis[i] == time.substring(0, 13) && dataObj.hasOwnProperty(point)) {
          dataObj[point].push(data)
        }
      }
    }

    // 遍历dataObj
    Object.keys(dataObj).map(key => {
      series.push({
        name: key,
        type: 'line',
        stackStrategy: 'all',
        data: dataObj[key],
        smooth: true
      })
    })

    ctx.body = {
      legend,
      xAxis,
      dataObj,
      series
    };
  }
}

module.exports = HomeController;
